package cn.wolfcode.luowowo.mgrsite.job;

import cn.wolfcode.luowowo.article.service.IStrategyDetailService;
import cn.wolfcode.luowowo.article.vo.StrategyPersistenceVO;
import cn.wolfcode.luowowo.cache.service.IStrategyStatisVORedisService;
import cn.wolfcode.luowowo.cache.util.RedisKeys;
import cn.wolfcode.luowowo.cache.vo.StrategyStatisVO;
import cn.wolfcode.luowowo.common.util.BeanUtil;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.List;

//@Component
public class RedisDataPersistenceJob {

    @Reference
    private IStrategyStatisVORedisService strategyStatisVORedisService;

    @Reference
    private IStrategyDetailService strategyDetailService;

    //秒 分 小时 月份中的日期 月份 星期中的日期 年份
    //0 0 0 1/1 * ?
    @Scheduled(cron="0/10 * * * * ?") // 0/5 * * * * ?
    public void redisDataPersistence(){
        System.out.println("--------------持久化开始------------------");

//        1、拿到 redis 中所有攻略统计的 vo 对象 -- java 方法 【keys(前缀)】 的使用
        List<StrategyStatisVO> list = strategyStatisVORedisService.listStrategyStatisVo(
                RedisKeys.STRATEGY_STATIS_VO.join("*")); // 命令行：keys str* (查询所有str 开头的 key)
        for (StrategyStatisVO vo : list) {
//        2、持久化到 mysql
            StrategyPersistenceVO pvo = new StrategyPersistenceVO(); // 为了避免不同服务循环依赖，重新新建一个
            BeanUtil.copyProperties(pvo, vo);
            strategyDetailService.updateStatisVO(pvo);
        }

        System.out.println("--------------持久化结束------------------");

    }



}
